home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / taropyon / hewin / ccikit.doc < prev    next >
Text File  |  1994-09-12  |  17KB  |  356 lines

  1. ==========================================================================
  2.             超弩級アプリケーションプロセッサ HEwin用
  3.                     CCIプログラミングキット
  4. ==========================================================================
  5.  
  6.  CCI プログラミングキットは,HEwin に内蔵されているC言語インタプリタCCI 
  7. によるプログラミングを行うためのツール&CCI プログラム集です。
  8.  
  9.  HEwin はCCI でのプログラミングにより各種状態設定/カスタマイズ/機能拡張
  10. が可能となっています。
  11.  
  12.  
  13. ●収録ファイル一覧
  14.  
  15.   ┌───────┬───────────────────────┐
  16.   │ファイル名    │内容                                          │
  17.   ├───────┼───────────────────────┤
  18.   │makecci .bat  │実行用バッチファイル                          │
  19.   │cpp     .exe  │CPP (プリ・プロセッサ)                      │
  20.   │              │                                              │
  21.   │affcopy .h    │ファイル複写機能用ヘッダファイル              │
  22.   │affrun  .h    │ファイルマネージャ・ヘッダファイル            │
  23.   │apl     .h    │アプリケーション・ヘッダファイル              │
  24.   │aplcol  .h    │アプリケーション色設定用ヘッダファイル        │
  25.   │aplctrl .h    │アプリケーション管理用ヘッダファイル          │
  26.   │aplmsg  .h    │アプリケーションメッセージ用ヘッダファイル    │
  27.   │aplno   .h    │アプリケーション種別用ヘッダファイル          │
  28.   │aplpcl  .h    │アプリケーション・子プロセスヘッダファイル    │
  29.   │aplwall .h    │壁紙設定用ヘッダファイル                      │
  30.   │ccidebug.h    │CCI デバッグ用ヘッダファイル                  │
  31.   │color   .h    │色設定用ヘッダファイル                        │
  32.   │dcncci  .h    │DOS コンソール用ヘッダファイル                │
  33.   │dcncmd  .h    │DOS コンソールコマンド用ヘッダファイル        │
  34.   │defs    .h    │各種定義用ヘッダファイル                      │
  35.   │fdl     .h    │ファイルダイアログ用ヘッダファイル            │
  36.   │keycode .h    │キーアドレス設定用ヘッダファイル              │
  37.   │lib     .h    │ライブラリヘッダファイル                      │
  38.   │moscur  .h    │マウスカーソル設定用ヘッダファイル            │
  39.   │ntmcci  .h    │通信ターミナル用ヘッダファイル                │
  40.   │ntmcmd  .h    │通信ターミナルコマンド用ヘッダファイル        │
  41.   │tdpcmd  .h    │テキストエディタ,コマンド用ヘッダファイル    │
  42.   │tdpofs  .h    │テキストエディタ,ワーク用ヘッダファイル      │
  43.   │txdcmd  .h    │テキストエディタ,コマンド用ヘッダファイル    │
  44.   │txdisch .h    │テキストエディタ,文字種判定用ヘッダファイル  │
  45.   │txdofs  .h    │テキストエディタ,ライブラリ用ヘッダファイル  │
  46.   │              │                                              │
  47.   │bgm     .c    │BGM 用プログラム                              │
  48.   │blackout.c    │ブラックアウト用プログラム                    │
  49.   │cciapl  .c    │CCI アプリケーションプログラム(デバッグ用)  │
  50.   │center00.c    │センタ処理テンプレート用プログラム            │
  51.   │center01.c    │センタ(タイプ1)処理用プログラム            │
  52.   │center02.c    │センタ(タイプ2)処理用プログラム            │
  53.   │center03.c    │センタ(タイプ3)処理用プログラム            │
  54.   │center04.c    │センタ(タイプ4)処理用プログラム            │
  55.   │colset  .c    │色設定用プログラム                            │
  56.   │dcn     .c    │DOS コンソール用プログラム                    │
  57.   │dcntool .c    │DOS コンソールツール用プログラム              │
  58.   │debug   .c    │デバッグ用プログラム                          │
  59.   │expcfg  .c    │EXP SETUP用プログラム                         │
  60.   │he386   .c    │HE386 用プログラム                            │
  61.   │ish     .c    │ish 用プログラム                              │
  62.   │lha     .c    │LHa 用プログラム                              │
  63.   │lhx     .c    │LHx 用プログラム                              │
  64.   │lib     .c    │ライブラリ                                    │
  65.   │main    .c    │メインモジュール                              │
  66.   │mktags  .c    │tagsファイル作成用プログラム                  │
  67.   │niffltr .c    │NIFTY-Serve フィルタ処理用プログラム          │
  68.   │nifty   .c    │NIFTY-Serve センタ処理用プログラム            │
  69.   │niflog  .c    │NIFTY-Serve ログ保存用プログラム              │
  70.   │ntm     .c    │通信ターミナル用プログラム                    │
  71.   │ntmlib  .c    │通信ターミナル用ライブラリプログラム          │
  72.   │pcl     .c    │ネイティブモード子プロセス用プログラム        │
  73.   │prs     .c    │プリントアウト用プログラム                    │
  74.   │sndplay .c    │音声データ再生用プログラム                    │
  75.   │tdp     .c    │テキストエディタ用プログラム                  │
  76.   │tdpmml  .c    │テキストエディタ用MML 制御プログラム          │
  77.   │tdppghlp.c    │テキストエディタ用ヘルプ制御プログラム        │
  78.   │tdptmp  .c    │テキストエディタ用テンプレート制御プログラム  │
  79.   │tdptool .c    │テキストエディタ用ツールプログラム            │
  80.   │tdpxtr  .c    │テキストエディタ用XTR 制御プログラム          │
  81.   │timer   .c    │タイマ処理用プログラム                        │
  82.   │tools   .c    │各種ツール用プログラム                        │
  83.   │wpaper  .c    │壁紙用ヘッダファイル                          │
  84.   └───────┴───────────────────────┘
  85.  
  86.  
  87. **************************************************************************
  88. ☆  CCIとは?
  89. **************************************************************************
  90.  
  91.  CCI というのはHEwin に内蔵されているC言語インタプリタの名称です。
  92.  もともとはMIYAZAKI氏が設計・開発されたもので,MIYAZAKI氏の許可をもらいHEwin
  93. の各種制御/カスタマイズ用の言語としてHEwin に内蔵させてもらいました。
  94.  CCI の言語仕様はC言語とほぼ同じですが,構造体がありません。また,インタ
  95. プリタとして性格上の制限等もあります。
  96.  
  97.  インタプリタといえばTOWNS ユーザーにはF-BASIC386がもっとも知られていると
  98. 思いますが,CCI はF-BASIC386とはプログラミング方法や環境はまったく異なりま
  99. す。
  100.  CCI はHEwin 内部においてインタプリタとして動作しているというだけで,プロ
  101. グラミング的にはむしろコンパイラのほうに近いものとなっています。
  102.  
  103.  CCI で作成されたプログラムはまず気軽にRUN (実行)するなどとということは
  104. できません。CCI 用プログラムを実行するには.まず(かなり巨大な)HEwin 本体
  105. を起動しなければならないからです(この問題は小さなCCI プログラムを実行する
  106. だけの専用プログラムを作成すれば解決する問題ですが,現状ではCCI 用プログラ
  107. ムを実行するソフトはHEwin しか存在しませんので,そういうことになってしまい
  108. ます)。
  109.  
  110.  気軽に実行できない理由は簡単に暴走する点もあげられます。
  111.  ポインタの値を間違えるとHEwin の本体プログラムやデータ領域まで破壊されて
  112. しまいます(F-BASIC386でいえば,変数の値を間違えたらF-BASIC386インタプリタ
  113. のプログラムそのものが壊れた,といった感じです)。
  114.  無限ループを作ってしまうと復帰する手段がありませんので,TOWNS をリセット
  115. するしかなくなります。F-BASIC386のように [BREAK]キーを押せばいつでも止まる
  116. とはいかないのです。
  117.  
  118.  CCI はプログラムにミスがあっても「○○行にエラーがあります」という表示を
  119. するだけで,詳しい内容などは教えてくれません。しかもその表示されているエラ
  120. ー箇所(ソースリストの行番号)も正しいとはかぎりません(たいていはそれより
  121. も前にエラーが発生しています)。
  122.  
  123.  なげやりな言い方をすれば,「正しく動くプログラムだけが動く」という仕様な
  124. のです。
  125.  
  126.  HEwin におけるCCI の主な役割は各種状態設定/カスタマイズです。CCI はHEwin
  127. の環境をユーザーが手軽に変更するために用意されたものですから,大規模なプロ
  128. グラミングを行うことはあまりないはずです(それほど手軽ではないかもしれませ
  129. んが, High Cを用意してHEwin そものをコンパイルし直すよりは楽なはずです)。
  130.  
  131.  HEwin では,CCI でのプログラミングによってもともと備わっていない機能を拡
  132. 張することもできます。これには多少の複雑なプログラングが必要になるかもしれ
  133. ません。そういった場合,言語仕様がC言語とほぼ同じなのを利用して他のC言語
  134. (High C やDOS 上のCコンパイラ)で開発/デバッグしてからCCI に移植すると
  135. いう方法もあります。
  136.  
  137.  CCI 用に書かれたプログラムがどんなものなのかというのは収録されているファ
  138. イルが見ればわかるでしょうが(拡張子が.CCIとなっているファイルがそうです),
  139. C言語そのものです。一部はそのままCコンパイラでコンパイルでできてしまいそ
  140. うです。
  141.  
  142.  
  143. **************************************************************************
  144. ☆  HEwinとCCIについて,
  145. **************************************************************************
  146.  
  147.  HEwin は起動時に,HEWIN.CCI というファイル名のCCI プログラムを自動的に読
  148. み込みます。
  149.  現バージョンのHEwin では起動後に別のCCI プログラムを読み込んで実行したり
  150. することはできません。
  151.  よって,CCI で作成されたプログラムは全てHEWIN.CCI の中に含まれている必要
  152. があります。
  153.  
  154.  
  155. **************************************************************************
  156. ☆  HEwin用CCIプログラムの作成方法
  157. **************************************************************************
  158.  
  159.  収録されているCCI 用のプログラムは,そのままではHEwin からは使えません。
  160.  HEwin から使えるようにするにはプリプロセッサ(cpp )を用いて変換(マクロ
  161. 置換)する必要があります。
  162.  
  163.  CCI プログラムのソースファイルが収録されているディレクトリに移動し,cpp 
  164. を使って変換してください。
  165.  具体的には以下のようにします。
  166.  
  167.     cpp -D__CCI__ main.c > hewin.cci
  168.  
  169.  「> 」より後ろのhewin.cci が新しく生成されるファイルのファイル名です。
  170.  
  171.  この変換を自動的に行うMAKECCI.BAT というバッチファイルも用意しています。
  172.  このバッチファイルを実行するとプリプロセッサ(CPP.EXE )を起動してソース
  173. リストをHEwin から読み込める形に変換してくれます。
  174.  
  175.  MAKECCI.BAT を実行するとNEWHEWIN.CCIというプログラムが生成されます。これ
  176. をHEwin で使うにはHEwin の本体プログラム(HEWIN.EXP )が格納されているディ
  177. レクトリにHEWIN.CCI というファイル名で複写してください。
  178.  MAKECCI.BAT はコマンドモードで実行してください。また,関連ファイル(CCI 
  179. 用のソースリスト等)が収録されているディレクトリがカレントの状態で実行して
  180. ください。
  181.  
  182.  収録されているソースリストをそのまま使ってHEWIN.CCI を作成する場合にはエ
  183. ラー等は起こらないと思いますが,自分で改造したり修正したりすると何らかの間
  184. 違いをおかしている可能性が出できます。
  185.  
  186.  HEwin は起動時にHEWIN.CCI を読み込みます。HEWIN.CCI 読み込み中に(文法ミ
  187. ス等で)エラーが発生するとエラー箇所を表示して動作を中断します。
  188.  表示されているエラー箇所はプリプロセッサによって変換される前のソースリス
  189. トのファイル名と位置(行番号)を示していますが,その箇所でエラーが起こって
  190. いるとは限りません。たいていはそれよりも前でエラーが発生している事がありま
  191. す。
  192.  表示されているエラー箇所はヒントくらいに考えてソースリストをみてエラー箇
  193. 所を探してください。
  194.  
  195. ※ プリプロセッサは単なるソースリスト変換プログラム」なので,ディスクの
  196.     読み書きとマクロ関係以外,文法上のエラーチェック等は一切行いません。
  197.  
  198.  
  199. **************************************************************************
  200. ☆  その他,注意・補足
  201. **************************************************************************
  202.  
  203.  本格的にCCI 用プログラムを作成するには,HEwin 以外の何らかのエディタが必
  204. 要です。
  205.  HEwin がエディタなのに別のエディタがどうして必要になるかというと,HEwin
  206. はHEWIN.CCI がないと起動ができないのでHEWIN.CCI が完成するまでは別のエディ
  207. タでソースを修正する必要があるからです。
  208.  
  209.  十分デバッグされた完成済のHEWIN.CCI を用意しておいて,新しく作成するHEWIN.
  210. CCI は別に作成するという方法ならエディタを用意することはないと思いますが,
  211. DOS 上で動作するエディタ(RWINK ,MIFES ,RED やVz等)を用意したおいたほう
  212. が何かと便利です。
  213.  
  214.  CCI プログラミングキットの中には簡単な説明ファイル(CCIKIT.DOC)とCCI 関
  215. 数の一覧表(CCIFUNC.LST )が収録されています。CCI によるプログラミングの時
  216. の参考にしてください。
  217.  これらのファイルを含めて,CCI 用のプログラムソースリストはすべてタブサイ
  218. ズは4の状態で書かれています。これらのファイルを見たり,編集したりするとき
  219. はエディタやテキスト表示プログラムのタブサイズは4にしてください。
  220.  
  221. ※  HEwin は正常に動作するHEWIN.CCI がないと起動できませんので,オリジナ
  222.     ルファイル(太っ腹FDに収録されているHEWIN.CCI )は必ずバックアップを
  223.     とって保存しておいてください。
  224.  
  225. ●CCI関数のアイテム登録について
  226.  
  227.  ユーザーが作成したCCI プログラムは,テキストエディタや通信ターミナル等さ
  228. まざまな場所で使われますが,一番手っとり早いのはアプリケーションセレクタに
  229. アイテム登録する方法です。
  230.  
  231.  この方法では,テキストエディタや通信機能を制御することはできませんが,作
  232. 成したCCI プログラムは独立した単独の機能として使えるので,比較的簡単に作成
  233. することができます。
  234.  CCI で作成されたプログラムはアプリケーションセレクタのアイテム(ユーザー
  235. 作成アプリケーション)に,その関数名を書くだけで呼び出せます。
  236.  HEwin に最初から備わっている機能でいえば,音声再生(アイテム登録名は「SND
  237. PLAY」)がこれにあたります。
  238.  アイテム登録できるCCI 関数は,慣習的に先頭が「CCI_」から始まる関数名をつ
  239. けます。
  240.  アイテム登録時に指定したパラメータはC言語のmain()関数と同じように,パラ
  241. メータの個数とポインタがargcとargvに設定されますので,普通のC言語と同じ要
  242. 領でプログラミングできます。
  243.  
  244.  
  245. **************************************************************************
  246. ☆                  CCI プログラミングの手引き
  247. **************************************************************************
  248.  
  249. ■  ファイルダイアログの使い方
  250.  
  251.  ファイルの選択や,ファイル名の入力等,ファイルダイアログは使われる頻度が
  252. 高いのでファイルダイアログ関係の関数の使い方を説明しておきます。
  253.  
  254. ●  基本チャート
  255.  
  256.     基本的な流れは,以下のようになります。
  257.  
  258.         ┌──────────────┐
  259.         │(1) オープン                │
  260.         │  FDL_open()                │
  261.         └──────┬───────┘
  262.                       │      エラー
  263.                       ├────────────→    終了
  264.                       ↓
  265.         ┌──────────────┐
  266.         │(2) 各種設定                │
  267.         │  FDL_set_title()           │
  268.         │  FDL_set_config()          │
  269.         │  FDL_set_wildcard()        │
  270.         │  FDL_set_defaultFilename() │
  271.         │  FDL_setStartPath()        │
  272.         └──────┬───────┘
  273.                       │
  274.                       ↓
  275.         ┌──────────────┐
  276.         │(3) サービス開始            │
  277.         │  FDL_start()               │
  278.         └──────┬───────┘
  279.                       │      取消またはエラー
  280.                       ├───────────────┐
  281.                       ↓                              │
  282.         ┌──────────────┐              │
  283.         │(4) ファイル名,その他取得  │              │
  284.         │  FDL_get_filename()        │              │
  285.         │  FDL_get_drv(fdl)          │              │
  286.         │  FDL_get_whare(fdl)        │              │
  287.         └──────┬───────┘              │
  288.                       │                              │
  289.                       │←──────────────┘
  290.                       ↓
  291.         ┌──────────────┐
  292.         │(5) クローズ                │
  293.         │  FDL_close()               │
  294.         └──────┬───────┘
  295.                       │
  296.                       ↓
  297.  
  298.  同じ設定で何度もファイルダイアログを使いたい場合は,(3)~(4)の間をルー
  299. プしてください。
  300.  
  301. ●  サンプルコーディング
  302.  
  303.     【コーディング例】
  304.  
  305.     int     ret;
  306.     char    *fdl;
  307.     char    *fn, filename[256];
  308.  
  309.     /* (1) オープン */
  310.     if ( (fdl = FDL_open(0)) == NULL )
  311.         return (ERR);   /* error */
  312.  
  313.     /* (2) 各種設定 */
  314.     FDL_set_wildcard( fdl, "*.*");           /* ワイルドカード   */
  315.     FDL_set_title( fdl,"TEST FILEDIALOG");   /* タイトル         */
  316.  
  317.     /* (3) サービス開始 */
  318.     ret = FDL_start(fdl);
  319.  
  320.     filename[0] = '\0';
  321.     if ( ret == NORMAL )
  322.     {
  323.         /* (4) ファイル名の取得 */
  324.         fn  = FDL_get_filename(fdl);
  325.  
  326.         /* ファイル名のチェック */
  327.         if ( strlen(fn) > 0 )
  328.         {   /* fnはFDL_close()すると実体がなくなるので複写しておく  */
  329.             strcpy( filename, fn);
  330.         }
  331.     } /* else 取消 or エラー    */
  332.  
  333.     /* (5) クローズ */
  334.     FDL_close(fdl);
  335.  
  336.     /* filename に選択/入力されたファイル名が設定される    */
  337.  
  338.  
  339.  
  340. **************************************************************************
  341. ☆  最後に,
  342. **************************************************************************
  343.  
  344.  この説明だけではCCI を自在に使いこなすりは困難だと思いますが,C言語を知
  345. っている方なら比較的簡単に扱えるはずです。後はHEwin 特有の関数や特徴/制限
  346. などに注意するだけです。
  347.  CCI 関数の一覧表やソースリスト等を参考にして,プログラミングに挑戦してみ
  348. てください。
  349.  
  350.  収録されているcpp のオリジナル(原版)はOS-9用で,Gigo氏が作成されたもの
  351. です。
  352.  MS-DOSにはMIYAZAIKI 氏が移植し,作者(TaroPYON)がCCI 用に多少手を加えま
  353. した。
  354.  Gigo氏,MIYAZAKI氏にはこの場を借りてお礼申し上げます。
  355.  
  356.